﻿using System;

namespace Mono.Cecil
{
	// Token: 0x020000DD RID: 221
	public abstract class TypeSpecification : TypeReference
	{
		// Token: 0x17000297 RID: 663
		// (get) Token: 0x06000903 RID: 2307 RVA: 0x000273D4 File Offset: 0x000255D4
		public TypeReference ElementType
		{
			get
			{
				return this.element_type;
			}
		}

		// Token: 0x17000298 RID: 664
		// (get) Token: 0x06000904 RID: 2308 RVA: 0x000273EC File Offset: 0x000255EC
		// (set) Token: 0x06000905 RID: 2309 RVA: 0x00002AA0 File Offset: 0x00000CA0
		public override string Name
		{
			get
			{
				return this.element_type.Name;
			}
			set
			{
				throw new InvalidOperationException();
			}
		}

		// Token: 0x17000299 RID: 665
		// (get) Token: 0x06000906 RID: 2310 RVA: 0x0002740C File Offset: 0x0002560C
		// (set) Token: 0x06000907 RID: 2311 RVA: 0x00002AA0 File Offset: 0x00000CA0
		public override string Namespace
		{
			get
			{
				return this.element_type.Namespace;
			}
			set
			{
				throw new InvalidOperationException();
			}
		}

		// Token: 0x1700029A RID: 666
		// (get) Token: 0x06000908 RID: 2312 RVA: 0x0002742C File Offset: 0x0002562C
		// (set) Token: 0x06000909 RID: 2313 RVA: 0x00002AA0 File Offset: 0x00000CA0
		public override IMetadataScope Scope
		{
			get
			{
				return this.element_type.Scope;
			}
			set
			{
				throw new InvalidOperationException();
			}
		}

		// Token: 0x1700029B RID: 667
		// (get) Token: 0x0600090A RID: 2314 RVA: 0x0002744C File Offset: 0x0002564C
		public override ModuleDefinition Module
		{
			get
			{
				return this.element_type.Module;
			}
		}

		// Token: 0x1700029C RID: 668
		// (get) Token: 0x0600090B RID: 2315 RVA: 0x0002746C File Offset: 0x0002566C
		public override string FullName
		{
			get
			{
				return this.element_type.FullName;
			}
		}

		// Token: 0x1700029D RID: 669
		// (get) Token: 0x0600090C RID: 2316 RVA: 0x0002748C File Offset: 0x0002568C
		public override bool ContainsGenericParameter
		{
			get
			{
				return this.element_type.ContainsGenericParameter;
			}
		}

		// Token: 0x1700029E RID: 670
		// (get) Token: 0x0600090D RID: 2317 RVA: 0x0001C714 File Offset: 0x0001A914
		public override MetadataType MetadataType
		{
			get
			{
				return (MetadataType)this.etype;
			}
		}

		// Token: 0x0600090E RID: 2318 RVA: 0x000054A2 File Offset: 0x000036A2
		internal TypeSpecification(TypeReference type) : base(null, null)
		{
			this.element_type = type;
			this.token = new MetadataToken(TokenType.TypeSpec);
		}

		// Token: 0x0600090F RID: 2319 RVA: 0x000274AC File Offset: 0x000256AC
		public override TypeReference GetElementType()
		{
			return this.element_type.GetElementType();
		}

		// Token: 0x04000378 RID: 888
		private readonly TypeReference element_type;
	}
}
